package com.zl.demo.common.controller.abstracts;

import org.springframework.web.bind.annotation.*;

import java.util.Map;

/**
 * 基础公共的Abstract
 * @param <T> 实体
 * @param <E> 数组
 * @author zl
 */
public abstract class AbstractBaseController<T,E> {

    /**
     * 查询列表数据接口
     * @param t 实体类
     * @return
     */
    @RequestMapping("/listAll")
    public abstract Map<String , Object> listAll(@RequestBody T t);

    /**
     * 分页查询列表数据接口
     * @param pageNumber 分页数量
     * @param pageSize 分页大小
     * @param t 实体类
     * @return
     */
    @RequestMapping("/list")
    public abstract Map<String , Object> list(@RequestParam(value = "pageNumber",defaultValue = "1") Integer pageNumber,
                                              @RequestParam(value = "pageSize",defaultValue = "10") Integer pageSize,
                                              @RequestBody T t);
    /**
     * 查询数据详情接口
     * @param t 泛型实体
     * @return
     */
    @GetMapping("info")
    public abstract T info(T t);

    /**
     * 添加数据接口
     * @param t
     * @return
     */
    @PostMapping("/add")
    public abstract int add(@RequestBody T t);

    /**
     * 更新数据接口
     * @param t 实体类
     * @return
     */
    @PutMapping("/update")
    public abstract int update(@RequestBody T t);

    /**
     * 删除数据接口
     * @param ids
     * @param t 泛型实体
     * @return
     */
    @DeleteMapping("/del")
    public abstract int delete(@RequestParam(value = "ids") E ids,T t);

}
